A computer system typically includes a monitor having a display screen for presenting information, such as text and images, to the user. The display screen can be configured into a window environment in which separate areas of the display screen, called windows, are used to present information to the user, to display information entered by the user or to interact with the user. Each window, which is typically rectangular in shape, can present or represent different information or different views of the same information. The window may include decorations such as a title bar, zoom button, etc. Examples of popular software systems that employ window environments are the System 7.RTM. operating system developed by Apple Computer, Inc. and the Microsoft Windows 95.RTM. operating system, which is commercially available from Microsoft Corporation.
Typically, a window manager controls the size and position of each window on the display screen. The window manager is a set of system software routines, located within the computer's operating system, that is responsible for managing the windows that the user views during operation of the computer system. The window manager keeps track of the location and size of each window and the window areas that must be drawn and redrawn in response to commands issued by application programs executing on the computer system. These commands, which may include move windows, change window sizes, etc., are generated and sent by the application program to the window manager via application programming interfaces (APIs). APIs typically include a collection of system calls requesting services from the operating system.
Each application program executing on the computer system defines a set of windows that are associated with that application. For example, a drawing application may define a document window into which a user "draws" images as well as floating or palette windows which contain tools, such as pencil, color, etc., for drawing those images. Similarly, a word processing application may have a document window into which text is entered as well as palette windows containing the tools, such as cut, paste, paragraph numbering, etc., available to manipulate the text. The application program may also define modal windows such as dialog boxes or alert boxes that appear in front of both the document windows and the palette windows, requesting immediate attention and input from the user.
The window manager typically stores these windows in layers defined by and associated with these application programs. A window layer is simply a set of all the windows associated with a single application program. The window manager maintains these window layers in a block of memory.
In addition to controlling the size and position of each window on the display screen, the window manager also controls the front-to-back order of the windows displayed on the display screen. This front-to-back positioning is referred to as the window's "z-order", which is named for the z-axis of a three-dimensional coordinate system, where z is the coordinate extending into the computer screen. In particular, a number is assigned to each layer of windows describing its priority class relative to the other window layers. A window layer's priority class defines where in the z-order the window layer can be displayed. For example, a window layer of priority class "2", e.g. a screen saver, will always appear in front of a window layer of priority class "3", e.g. an application program, while multiple window layers of priority class "3", e.g. a word processing application and a spreadsheet application, can overlie each other in the z-order. The window manager also controls the ordering in which document, floating and modal windows may appear within a specific application layer.
In prior art systems, the window manager draws the entire layer of windows associated with a currently executing application program at the front of the computer screen for display to a user of the computer system. For example, if the user initiates a word processing operation, then the layer of windows associated with a word processing application is brought to the front of the screen. Behind that layer of word processing windows is a layer of windows associated with the last executed application program, such as a drawing application, which is assigned to the same priority class as the word processing layer of windows. Behind the layer of drawing windows is a third layer of windows from the application program used before the drawing application, such as a spreadsheet application.
When a user selects a window that is not displayed on the front of the screen, the window manager brings that window and all of the windows in that layer to the front of the screen, provided that the priority class of the selected window layer is the same as or higher than the priority class of the window layer currently being displayed. If, during a word processing task, for example, the user selects a window from the spreadsheet application, the prior art window manager re-draws the screen so that all of the windows from the spreadsheet application are at the front of the screen. This re-drawing of the windows displayed on the screen also alters the z-ordering of windows by placing the spreadsheet layer of windows ahead of the word processing layer of windows.
Such re-positioning of window layers by application program, however, may result in a cluttered window environment where the user is only interested in a single document window and a limited group of palette windows associated with that particular document window. This often occurs when a user has the window environment configured to display windows from two or more applications simultaneously, such as a word processing application and a spreadsheet application. With the multiplicity of palette windows available with most applications, such a window environment can quickly become incoherent. Moreover, upon selection of the document window, the conventional window managers display all of the windows in the layer associated with that application program. The prior art window managers do not support the creation or display of window groups containing something less than all of the windows in the layer associated with the application program.
In U.S. patent application Ser. No. 08/540,010, filed Oct. 6, 1995, entitled Method and Apparatus for Arranging and Displaying Windows on a Display Screen of a Computer System and assigned to the assignee of this application, a system is disclosed for creating and displaying groups of windows associated with an application program. Although the system disclosed in that application is a substantial improvement over the prior art window managers, it has limitations. For example, the system does not permit entire window groups to be added to other window groups and further, does not permit an application program to access the list of windows defined by that application or the windows or window groups contained within a particular window group. These limitations obviate iteration, i.e., scanning or reviewing of the windows defined by the application. Moreover, the system is not easily implemented in an object oriented programming environment.